/*
********************************************************************************
* 文件: input.h
* 模块: input
* 代词: in_
* 
* 
* 作用：词法分析部分使用的数据结构，和对这个数据结构的操作函数。
* 版本：
********************************************************************************
*/


#ifndef  _INPUT_H_
#define  _INPUT_H_

#include <stdio.h>
#include "asmtype.h"
#include "character.h"

/*
********************************************************************************
* 数据结构定义部分:
* 
********************************************************************************
*/
typedef struct
{
    // 内部数据结构。
    tetra  fname[256];
    // 文件操作函数。
    FILE *      fp;             // 文件或流指针。
    read_xxx    readfunc;       // 读取文件中下一个字符的函数。    
    
    // 构置缓冲区以满足一次 unput 功能。
    //
    tetra         line;           // 行号。
    tetra         position;       // 位置。
    tetra         flag;

    
    // 函数返回值。
    // 代表一个字符。
    tetra  value;          // 字符值。 
    
} input_context;



/*
********************************************************************************
* 函数声明部分:
*
********************************************************************************
*/

tetra  in_init_context( tetra * fname, tetra code );
void  in_fini_context( tetra  ptetra );

tetra  in_next_char( tetra  ptetra );
tetra  in_next_nospace( tetra  ptetra );
void  in_unput_char( tetra  ptetra );

void  in_error_out( tetra  ptetra );


#endif

